AWS ParallelCluster EFSマウント設定
ParallelClusterに共有ストレージをマウント
- AWS ParallelClusterはAWSがサポートする、HPCクラスターの管理ツールです。
- PallelClusterの共有ストレージとしてEFSを利用できます。
- EFSを接続したParallelClusterの設定ファイルを紹介します。
何がうれしいのか
ParallelClusterのマスターノード(ジョブスケジューラ)がNFSサーバになっており、コンピュートノード(演算サーバ)にマウントされます。共有ストレージとして大量のデータの保存や、高頻度、高スループットのアクセスを求めるとマスターノードがボトルネックになります。それを解決するには専用の共有ストレージが必要になります。
マウントできる共有ストレージの種類
ParallelClusterにマウントできる共有ストレージは2種類あります。 当記事ではEFSの設定について触れます。
- EFS: フルマネージドのNFSファイルシステムのサービス
- FSx for Lustre: フルマネージドのHPC向け高性能共有ストレージサービス
共有ストレージの使い分け
EFS利用時の特徴・注意点
EFS詳細
下記のブログにまとまっておりますのでご覧ください。
EFSのマウント方法
ParallelClusterへEFSのマウント方法も2種類あります。 当記事では2の方法でEFSをマウントする設定について触れます。
- ParallelCluster作成時にEFSを新規作成し同時にマウント
- 事前にEFSを作成しておき、ParallelCluster作成時に既存EFSをマウント
1. EFS新規作成と同時にマウント
ParallelClusterのクラスター削除コマンド(pcluster delete)でEFSも同時に削除されます。クラスターの作り直す際には注意が必要です。pclusterコマンドからクラスターとして管理のEFSになります。
2. 既存のEFSマウント
EFSは単体で管理されるため、クラスター削除コマンドでEFSも削除されることはありません。
設定例
EFS作成
EFSをそのまま作るだけで大丈夫です。
ParallelClusterを起動するVPCを選択します。
完成です。
ファイルシステムIDをParallelClusterの設定ファイルで使います。例ではバーストモード設定ですがワークロードに応じて、プロビジョンド・スループットもご検討ください。
ParallelCluster設定ポイント
global
セクション
EFS設定を有効化にします。個人的にはここを書き忘れてマウントされなかったをよくやってます。
efs_settings = cluster_efs
efs
セクション
efs_fs_id
は作成EFSのID部分をそのまま入力shared_dir
はマスターノードと、コンピュートノードにEFSがマウントされるパスです- マスターノードとコンピュートノードで別のパスにマウントすることはできません
mnt/efs
の表記で、/mnt/efs
にマウントされます
[efs cluster_efs] # EFS Setting efs_fs_id = fs-1a02143b shared_dir = mnt/efs
設定ファイル全文
構築する環境に合わせて適時変更してください。とくに下記の項目は環境に依存します。
- key_name
- s3_read_resource
- post_install
- vpc_id
- master_subnet_id
- compute_subnet_id
- efs_fs_id
[aws] aws_region_name = ap-northeast-1 [global] cluster_template = default update_check = true sanity_check = true [aliases] ssh = ssh {CFN_USER}@{MASTER_IP} {ARGS} [cluster default] key_name = sandbox-key base_os = alinux2 scheduler = slurm vpc_settings = custom # Instance Type master_instance_type = m6g.large compute_instance_type = c6g.xlarge # Use Spot Instance cluster_type = spot # Use Placemant Group placement = compute placement_group = DYNAMIC # Cluster Size maintain_initial_size = false initial_queue_size = 0 max_queue_size = 4 # Enable CloudWatchLogs cw_log_settings = cluster_log # Enable EFS efs_settings = cluster_efs # S3 Setting s3_read_resource = arn:aws:s3:::test-parallelcluster-ohmura/parallelcluster/* post_install = s3://test-parallelcluster-ohmura/parallelcluster/postinstall.sh # Tag tags = { "Name" : "TestCluster" } [vpc custom] # VPC Setting vpc_id = vpc-0d27a23447c01e156 master_subnet_id = subnet-07df3e71babd667be compute_subnet_id = subnet-08b8dd5c25b414dd0 use_public_ips = true [efs cluster_efs] # EFS Setting efs_fs_id = fs-1a02143b shared_dir = mnt/efs [cw_log cluster_log] # CloudWatchLogs Setting enable = true retention_days = 30
ParallelCluster実行環境
> pcluster version 2.8.1
クラスター構築
クラスターを作成します。
> pcluster create efs-cluster -c efs-config Beginning cluster creation for cluster: efs-cluster Creating stack named: parallelcluster-efs-cluster Status: parallelcluster-efs-cluster - CREATE_COMPLETE MasterPublicIP: 18.176.30.98 ClusterUser: ec2-user MasterPrivateIP: 10.1.11.113
マスターノードのマウント状況
マスターノードにSSH接続して確認しました。/mnt/efs
にEFSがマウントされていますね。
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 484K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/nvme0n1p1 25G 5.0G 21G 20% / /dev/nvme0n1p128 10M 3.7M 6.3M 38% /boot/efi /dev/nvme1n1 20G 45M 19G 1% /shared fs-1a02143b.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt/efs tmpfs 780M 0 780M 0% /run/user/1000
コンピュートノードのマウント状況
コンピュートノードは起動していないため、設定ファイルを変更し1台だけ常時起動状態にしてみましょう。
# Cluster Size maintain_initial_size = true initial_queue_size = 1
クラスターを更新します。tag
を設定すると差分の確認ができず更新していいのか判断を委ねられます。
> pcluster update efs-cluster -c efs-config Validating configuration file efs-config... Retrieving configuration from CloudFormation for cluster efs-cluster... Found Configuration Changes: # parameter old value new value --- --------------------- ----------- ----------------------- [cluster default] 01 initial_queue_size - 1 02 maintain_initial_size - True 03* tags - {'Name': 'TestCluster'} Validating configuration update... The requested update cannot be performed. Line numbers with an asterisk indicate updates requiring additional actions. Please review the details below: #03 Update actions are not currently supported for the 'tags' parameter How to fix: Restore 'tags' value to '{}'. If you need this change, please consider creating a new cluster instead of updating the existing one. In case you want to override these checks and proceed with the update please use the --force flag. Note that the cluster could end up in an unrecoverable state. Update aborted.
変更内容に問題はないため--force
を追加して改めてクラスターの更新をかけます。
更新してもよいか聞かれるためy
を入力します。
pcluster update efs-cluster -c efs-config --force Validating configuration file efs-config... Retrieving configuration from CloudFormation for cluster efs-cluster... WARNING: Forced update applied. All safety checks will be skipped. Not all updates may be applied and your cluster may become unstable. Found Configuration Changes: # parameter old value new value --- --------------------- ----------- ----------------------- [cluster default] 01 initial_queue_size - 1 02 maintain_initial_size - True 03 tags - {'Name': 'TestCluster'} Do you want to proceed with the update? - Y/N:y Updating: efs-cluster Calling update_stack Status: parallelcluster-efs-cluster - UPDATE_COMPLETE
コンピュートノードにSSH接続して確認しました。こちらも/mnt/efs
にEFSがマウントされていますね。
$ df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 3.8G 0 3.8G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 476K 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/nvme0n1p1 25G 5.0G 21G 20% / /dev/nvme0n1p128 10M 3.7M 6.3M 38% /boot/efi ip-10-1-11-113.ap-northeast-1.compute.internal:/home 25G 5.0G 21G 20% /home ip-10-1-11-113.ap-northeast-1.compute.internal:/shared 20G 44M 19G 1% /shared fs-1a02143b.efs.ap-northeast-1.amazonaws.com:/ 8.0E 0 8.0E 0% /mnt/efs ip-10-1-11-113.ap-northeast-1.compute.internal:/opt/slurm 25G 5.0G 21G 20% /opt/slurm tmpfs 783M 0 783M 0% /run/user/1000
Tips: EFSモード変更
バーストモードからスループットモードに切り替え方法
注意: 連続したモード変更はできません。24時間の空き時間が必要になります。
Q: ファイルシステムのプロビジョンドスループットはどのくらいの頻度で変更できますか?
よくある質問 - Amazon EFS | AWS
手順
対象のEFSを選択してから編集をクリック。
プロビジョニング済み にチェックをいれ、必要なスループット数を入力して変更を保存をクリック。
スループットモードが変更されました。
おわりに
先にEFSを作成してファイルシステムIDを設定ファイルに入力するだけなのでマウントは簡単ですね。
以上、コンサル部の大村@網走でした。